package com.wsoft.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wsoft.system.dto.LoginDTO;
import com.wsoft.system.entity.SysAccountEntity;
import com.wsoft.system.query.account.OnlineQuery;
import com.wsoft.system.query.account.PwdQuery;
import com.wsoft.system.query.account.StyleQuery;
import com.wsoft.vo.config.ConfigRespVO;
import com.wsoft.vo.config.LoginInfoRespVO;
import com.wsoft.vo.config.MultipleOrgRespVO;

import java.util.List;

/**
 * <p>
 * 账号表 服务类
 * </p>
 *
 * @author juiet
 * @since 2024年09月03日 10:35:39
 */
public interface ISysAccountService extends IService<SysAccountEntity> {
    /**
     * 登录
     * @param dto 登录对象
     * @return token
     */
    String login(LoginDTO dto);

    /**
     * 根据登录账号获取相应的环境配置
     *
     * @param username
     * @return
     */
    List<ConfigRespVO> getSystemConfig(String username);

    /**
     * 根据token返回相关登录信息
     *
     * @return com.wsoft.vo.config.LoginInfoRespVO
     * @author zhonglj
     * @date 2024-09-07 14:05
     **/
    LoginInfoRespVO getLoginInfo();

    /**
     * 获取当前登录人多组织信息
     *
     * @return com.wsoft.vo.config.MultipleOrgRespVO
     * @author zhonglj
     * @date 2024-09-07 14:15
     **/
    MultipleOrgRespVO getMultipleOrg();

    /**
     * 切换当前登录组织
     *
     * @param orgId
     * @return void
     * @author zhonglj
     * @date 2024-09-07 14:55
     **/
    void changeLoginOrg(Long orgId);


    /**
     * 修改密码
     * @param query
     */
    void updatePwd(PwdQuery query);

    /**
     * 修改个人风格
     * @param query
     */
    void updateStyle(StyleQuery query);

    /**
     * 修改在线状态
     * @param query
     */
    void updateOnline(OnlineQuery query);



    /**
     * 获取所有账号信息
     * @return
     */
    List<SysAccountEntity> listAll();

    /**
     * 根据组织类型获取组织id
     * @param type
     * @return
     */
    Long getOrgIdByType(String type);

}
